﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FrogEngine
{
	public interface IFSMState : ILogical
	{
		string StateName { get; }
		IDictionary<string, IFSMState> Transitions { get; }

		void AddTransition(IFSMState state);
		void RemoveTransition(IFSMState state);
		bool IsValidTransition(IFSMState nextState);

		/// <summary>
		/// Executes before a transition away from this state.
		/// </summary>
		void OnLeaving();

		/// <summary>
		/// Executes before a transition to this state.
		/// </summary>
		void OnEntering();
	}
}
